// 这个数据，是用于：添加（修改）管理员时，设定权限
// 1、定义全部的菜单数据
export const menudata = [
    {
        id: "1",
        label: "首页",
        path: "/admin/Home",
    },
    {
        id: "2",
        label: "商品信息的管理",
        children: [
            {
                id: "2-1",
                label: "商品列表",
                path: "/admin/goodslist",
                children:[
                    {
                        // crud代表的意思是增,查,改,删
                        id: "2-1-r",
                        label: "商品分页列表显示",
                    },
                    {
                        // crud代表的意思是增,查,改,删
                        id: "2-1-s",
                        label: "是否推荐显示",
                    },
                    {
                        // crud代表的意思是增,查,改,删
                        id: "2-1-m",
                        label: "是否秒杀显示",
                    }
                ]
            },
            {
                id: "2-2",
                label: "商品分页",
                path: "/admin/goodspaging",
                children:[
                    {
                        // crud代表的意思是增,查,改,删
                        id: "2-2-r",
                        label: "商品分页列表显示",
                    },
                    {
                        // crud代表的意思是增,查,改,删
                        id: "2-2-s",
                        label: "是否推荐显示",
                    },
                    {
                        // crud代表的意思是增,查,改,删
                        id: "2-2-m",
                        label: "是否秒杀显示",
                    }
                ]
            },
            {
                id: "2-3",
                label: "推荐商品",
                path: "/admin/Recommend",
                children:[
                    {
                        // crud代表的意思是增,查,改,删
                        id: "2-3-r",
                        label: "商品分页列表显示",
                    },
                    {
                        // crud代表的意思是增,查,改,删
                        id: "2-3-s",
                        label: "是否推荐显示",
                    },
                    {
                        // crud代表的意思是增,查,改,删
                        id: "2-3-m",
                        label: "是否秒杀显示",
                    }
                ]
            }
        ]
    },
    {
        id: "3",
        label: "轮播图管理",
        children: [
            {
                id: "3-1",
                label: "轮播图列表",
                path: "/admin/getbanner",
                // 子一级
                children:[
                    {
                        // crud代表的意思是增,查,改,删
                        id: "3-1-r",
                        label: "轮播图列表显示",
                    },
                    {
                        // crud代表的意思是增,查,改,删
                        id: "3-1-u",
                        label: "修改轮播图状态",
                    },
                    {
                        id: "3-1-d",
                        label: "删除轮播图",
                    },
                    {
                        // 删除全部轮播图权限
                        id: "3-1-e",
                        label: "删除全部轮播图",
                    }
                ]
            },
            {
                id: "3-2",
                label: "轮播图添加",
                path: "/admin/addbanner"
            }
        ]
    },
    {
        id: "4",
        label: "操作人员管理",
        children: [
            {
                id: "4-1",
                label: "操作人员列表",
                path: "/admin/listadmin",
                children:[
                    {
                        id: "4-1-r",
                        label: "操作人员列表显示",
                    },
                    {
                        id: "4-1-u",
                        label: "操作人员修改",
                    },
                    {
                        id: "4-1-d",
                        label: "操作人员删除",
                    }
                ]
            },
            {
                id: "4-2",
                label: "添加操作人员",
                path: "/admin/addadmin"
            }
        ]
    },
    {
        id: "5",
        label: "订单信息管理",
        children: [
            {
                id: "5-1",
                label: "查看全部订单列表",
                path: "/admin/getorder"
            }
        ]
    },
    {
        id: "6",
        label: "地址管理",
        children: [
            {
                id: "6-1",
                label: "查看地址",
                path: "/admin/address"
            }
        ]
    },
    
];

// 2.根据当前用户的权限产生相应的菜单
export default function getMenus() {
    // console.log("getMenus");
    
    // 1.获取该用户的权限(在登录时已经保存了)
    // 获取chekedKeys的数据
    // 当前用户的chekedKeys先赋值为空数组
    let chekedKeys:string[] = []
    let currKeys = sessionStorage.getItem("grants")
    if(currKeys){
        chekedKeys= JSON.parse(currKeys)
    }
    // 2.根据该用户的权限，结合全部菜单数据，产生该用户的菜单
    // 当前用户的currMenuData先赋值为空数组
    // 定义数据类型
    interface IMenuItem{
        id:string,
        label:string,
        path?:string,
        children?:IMenuItem[]
    }
    // 初始账号的为空就给它加上所有权限
    if(chekedKeys?.length === 0){
        chekedKeys = ["1","2","2-1","2-1-r","2-1-s","2-1-m","2-2","2-2-r","2-2-s","2-2-m","2-3","2-3-r","2-3-s","2-3-m","3","3-1",'3-1-r','3-1-u','3-1-d','3-1-e',"3-2","4","4-1","4-1-r","4-1-u","4-1-d","4-2","5","5-1","6","6-1"]
    }
    let currMenuData:IMenuItem[] = []  //存储当前用户的菜单项
    menudata.forEach(item=>{
        // menudata里面的id是否在用户的chekedKeys中
        if(chekedKeys.indexOf(item.id)>-1){
            // 一级路由的数据
            currMenuData.push({...item})
            if(item.children){                                              
                // 给当前菜单最后一项(新添加的项目)的chilidren先赋值为空数组
                currMenuData[currMenuData.length-1].children=[]
                item.children.forEach(sonitem=>{
                    if(chekedKeys.indexOf(sonitem.id)>-1){
                        currMenuData[currMenuData.length-1].children?.push({...sonitem})
                    }
                })
        }
    }
    })
    console.log("currMenuData",currMenuData);
    return currMenuData
    
}
